[Amazon Connect] 発信者番号でフローの処理を分岐する
1 はじめに
Amazon Connectでは、発信者の電話番号が取得できるので、それを基づいた処理の分岐が可能です。今回は、発信者の電話番号でメッセージを変えるフローを作成してみました。
2 問い合わせ属性で判定する
発信者番号で処理を分岐するには、問い合わせ属性を確認するブロックを配置して、$System.Customer Numberを確認するのが、最も簡単です。
確認する属性で System を選択すると、Customer Numberも選択リストに現れます。 なお、電話番号は、E.164形式(日本の場合、+81で始まるやつ)で指定することに注意が必要です。
そして、分岐した後のプロンプトは、以下の2つを用意しました。
3 電話番号をDBで管理する
先の方法では、対象の電話番号を問い合わせフローに べた書き となってしまっていますが、これをDBで管理するようにしてみます。
とりあえず雑にDynamoDBに、電話番号のリストを作ってみました。
Amazon ConnectからLambdaに送られるJSONは、以下のようになっており、発信者番号が入っています。
{ "Details": { "ContactData": { "Attributes": {}, "Channel": "VOICE", "ContactId": "305661db-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "CustomerEndpoint": { "Address": "+819012345678", "Type": "TELEPHONE_NUMBER" }, "InitialContactId": "305661db-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "InitiationMethod": "INBOUND", "InstanceARN": "arn:aws:connect:ap-southeast-2:xxxxxxxxxxxx:instance/8db137d2-cacd-xxxx-xxxx-xxxxxxxxxxxx", "PreviousContactId": "305661db-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Queue": null, "SystemEndpoint": { "Address": "+819012345678", "Type": "TELEPHONE_NUMBER" } }, "Parameters": {} }, "Name": "ContactFlowEvent" }
JSONから発信者番号を抽出し、DynamoDBの電話番号一覧と比較して、リストにヒットすれば、{"result" : "true"} 、無ければ、{"result" : "false"} を返すコードが、以下のとおりです。
const AWS = require("aws-sdk"); const DynamoDB = new AWS.DynamoDB.DocumentClient({ region: "ap-southeast-2" }); const tableName = 'PhoneNumberTable'; exports.handler = async (event) => { // 発信者番号 const phone = event.Details.ContactData.CustomerEndpoint.Address; // DynamoDBの一覧取得 const db = await DynamoDB.scan({TableName: tableName}).promise(); // 発信者番号が一覧に存在するかどうかの確認 const result = db.Items.some( item => { return (item.PhoneNumber == phone); }); return { result : result }; };
問い合わせフローの方は、こんな感じになりました。着信を受けたらまずLambdaに制御を移し、戻り値でレスポンスを変えています。
AWS Lambda関数を呼び出すブロックでは、Lambdaのarnを指定しています。
問い合わせ属性を確認するブロックでは、result が true かどうかを条件に分岐しています。
Lambdaのコードでは、true(Boolean) で返していますが、問い合わせフローに戻った時点ではstringとして処理されています。
4 最後に
今回は、発信者番号に基づいて制御を変更する 問い合わせフロー を作成してみました。このような処理もLambdaを挟むことで、自由に応用が広がりそうです。
5 参考リンク
Amazon Connect 簡単に使えるクラウド型コンタクトセンター
Amazon Connect Administrator Guide
[Amazon Connect] 最初のプロンプトで再生するメッセージをLambda関数で生成してみる
[Amazon Connect] 問い合わせフローの中でLambda関数を実行する
Amazon Connectのデータストリーミング機能でAgent Event StreamsをKinesis Streamに送る
[Amazon Connect] プロンプトのテキスト読み上げにSSMLが使用可能です
[Amazon Connect] 問い合せフローのログを保存する
[Amazon Connect] キューに入った時のメッセージや保留音を変更する
Amazon Connectでコンタクトフロー上で設定した値を画面上に表示する方法
Amazon ConnectのCCP(Contact Control Pannel)から発信、転送する方法
Amazon Connectのデータストリーミング機能でコンタクト履歴情報をKinesis Firehose経由でS3に保存する
[Lex] Amazon Connectを使用して Amazon Lex を電話で使用してみる
Amazon ConnectをZendesk Support上で使用してみる
Amazon Connect Outbound ContactのPreview版を試してみる
Amazon Connect Streamsで各種EventをSubscribeする
Amazon Connect Streamsの初期セットアップ手順
(レポート)BAP202 : Amazon Connectでクラウドベースのコンタクトセンター向けにパーソナライズされた顧客体験を届ける #reinvent
Amazon Connect CTI Adapter for SalesforceでScreen Popupを試してみる
Amazon ConnectをSalesforce Service Cloud上で使用してみる
Amazon Connectを使って電話からEC2を再起動する
コールセンターサービス Amazon Connect で日本語TTSメッセージを再生する